 //app.js
const {
  wxLogin
} = require('./config');
App({
  onLaunch: function () {
    // 检查版本更新
    this.updateManager();

    wx.showLoading({
      title: '登陆中',
    })

    wx.login({
      success: res => {
        // 发送 res.code (用户登录凭证（有效期五分钟）) 到后台换取 openId, sessionKey, unionId;
        wx.request({
          url: wxLogin,
          method: 'POST',
          data: {
            code: res.code
          },
          header: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
          },
          success: res => {
            if (res.data.code == 0) {
              // console.log('wx.login')
              this.globalData.openid = res.data.data.openid;
              

              if (res.data.data.unionid){
                wx.setStorageSync('unionid', res.data.data.unionid);
              }
              let unionid = wx.getStorageSync('unionid'); 
              console.log('go_index','unionid: ', res.data.data.unionid)
              
              if (unionid){
                if (res.data.data.token) {
                  this.globalData.token = res.data.data.token;
                  wx.switchTab({
                    url: '/pages/index/index',
                  })
                } else {
                  wx.redirectTo({
                    url: '/pages/login_mobile/login_mobile',
                  })
                }
              }else{
                wx.reLaunch({
                 url: '/pages/authorize/authorize',
                })
              }
            } else if (res.data.code == 1) {
                this.globalData.openid = res.data.data.openid;
                if (res.data.data.unionid) {
                  wx.setStorageSync('unionid', res.data.data.unionid);
                }
                let unionid = wx.getStorageSync('unionid');
                console.log('wx_login_code_1', 'unionid: ', unionid)
                if (unionid) {
                  wx.hideLoading();
                  // 获取当前路由路径
                  var p = getCurrentPages()
                  var route = p.pop().__route__
                  console.log(route)
                  if (route != 'pages/login_mobile/login_mobile') {
                    wx.reLaunch({
                      url: '/pages/login_mobile/login_mobile',
                    })
                  }
                } else {
                  wx.reLaunch({
                    url: '/pages/authorize/authorize',
                  })
                }
            } else {
              wx.hideLoading();
              wx.showToast({
                title: res.data.msg,
                icon: 'none',
              })
              wx.redirectTo({
                url: '/pages/login_mobile/login_mobile',
              })
            }
          }
        })
      }
    })
    // wx.login __end

    
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  },
  appRequest: function (config) {
    const token = this.globalData.token;
    // console.log('封装', token)
    wx.request({
      url: config.url,
      method: config.method,
      data: config.data,
      header: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'token': token,
      },
      success: (res) => {
        if (res.data.code == 0) {
          config.success(res.data);
        } else if (res.data.code == 600){
          wx.hideNavigationBarLoading();
          console.error(res.data);
          wx.showToast({
            title: res.data.msg,
            icon: 'none',
          })
          this.globalData.token = '';
        } else if (res.data.code == 100000){
          wx.hideNavigationBarLoading();
          this.globalData.token = ''
          wx.showToast({
            title: res.data.msg,
            icon: 'none',
          })
          wx.reLaunch({
            url: '/pages/login_mobile/login_mobile',
          })
        }else{
          wx.hideNavigationBarLoading();
          console.error(res.data);
          wx.showToast({
            title: res.data.msg,
            icon: 'none',
          })
          config.fail && config.fail(res.data);
        }
      },
      fail: (res) => {
        wx.hideNavigationBarLoading();
        wx.showToast({
          title: '网络请求失败',
          icon: 'loading',
          duration: 2000
        })
        config.fail && config.fail(res);
      },
    });
  },
  // 版本控制
  updateManager: function () {
    const updateManager = wx.getUpdateManager()
    updateManager.onCheckForUpdate(function (res) {
      // 请求完新版本信息的回调
      console.log('app.js_有无最新版本: ',res.hasUpdate)
    })
    updateManager.onUpdateReady(function () {
      wx.showModal({
        title: '更新提示',
        content: '新版本已经准备好，是否重启应用？',
        success: function (res) {
          if (res.confirm) {
            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
            updateManager.applyUpdate()
          } else if (res.cancel) {
            return false;
          }
        }
      })
    })
    updateManager.onUpdateFailed(() => {
      // 新的版本下载失败
      wx.hideLoading();
      wx.showModal({
        title: '升级失败',
        content: '新版本下载失败，请检查网络！',
        showCancel: false
      });
    })
  },
  globalData: {
    userInfo: null,
    login: false,
    orderDetailFlag: true,
    notice: '',
    noticeTips: 0,
    noticeId: '',
    newnoticeId:'',
    getdata:{}
  }
})